Skip to content

Conversation

@dahlend
Copy link
Owner

@dahlend dahlend commented Oct 8, 2025

Add the Picard-Chebyshev First Order ODE Integrator for solving initial value
problems.

This is based on a whole slew of papers, though this implementation leans heavily
on the algorithm described in:
"Surfing Chaotic Perturbations in Interplanetary Multi-Flyby Trajectories:
Augmented Picard-Chebyshev Integration for Parallel and GPU Computing
Architectures", 2022, https://doi.org/10.2514/6.2022-1275

Though that paper appears to have a typo in its A matrix definition, so some of
the thesis written by Darin Koblick "Parallel High-Precision Orbit Propagation
Using The Modified Picard-Chebyshev Method", 2012
was used to correct the matrix definition.

This is not a GPU implementation, though some small simplifications were applied to
the mathematics. This implementation is designed to reduce the total number of
SPICE kernel calls to a minimum, as it was found that the Radau integration time
was dominated by these queries.

Since this integrator fits Chebyshev polynomials at the same time that it performs
the integration, the integrator is designed to record the polynomial coefficients.
These are stored in the PicardStep, which exposes a function allowing the
user to query the state of the system at any point between the start of the
integration and the end.

Overall performance is similar to slightly worse than the existing Radau
implementation. The main benefits of this implementation are that it is designed
to construct a time series set of chebyshev fits of the orbit, meaning at any
point from the start to the end of the integration, the best fitted orbit can be
directly queried without performing additional integrations.

@dahlend dahlend merged commit 2731b71 into main Oct 8, 2025
2 checks passed
@dahlend dahlend deleted the picard branch October 8, 2025 13:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants